<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Navo Portable Library: 双向线形链表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- 制作者 Doxygen 1.7.3 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
--></script>
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Navo Portable Library&#160;<span id="projectnumber">Ver 1.0.20120827</span></div>
   <div id="projectbrief">Provides generic platform independent facilities.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>首页</span></a></li>
      <li><a href="modules.html"><span>模块</span></a></li>
      <li><a href="annotated.html"><span>数据结构</span></a></li>
      <li><a href="files.html"><span>文件</span></a></li>
      <li id="searchli">
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="搜索" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">数据结构</a> &#124;
<a href="#define-members">宏定义</a> &#124;
<a href="#typedef-members">类型定义</a> &#124;
<a href="#func-members">函数</a>  </div>
  <div class="headertitle">
<h1>双向线形链表</h1>  </div>
<div class="ingroups"><a class="el" href="group___xE9_x93_xBE_xE5_xBC_x8F_xE8_xA1_xA8.html">链式表</a></div></div>
<div class="contents">
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
数据结构</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct____dllnk__node.html">__dllnk_node</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">双向线形链表节点  <a href="struct____dllnk__node.html#_details">更多...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structdllnk__head.html">dllnk_head</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">双向线形链表表头  <a href="structdllnk__head.html#_details">更多...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="define-members"></a>
宏定义</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaba46055af405e695c603e14df05be38f">DLLNK_HEAD</a>(name)&#160;&#160;&#160;<a class="el" href="structdllnk__head.html">dllnk_head</a> name = {NULL}</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">定义一个名为name的表头，并对其初始化  <a href="#gaba46055af405e695c603e14df05be38f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga08e2aeaf4c5fde424c509d3053e2fa6c">DLLNK_NODE</a>(name)&#160;&#160;&#160;<a class="el" href="struct____dllnk__node.html">dllnk_node</a> name = {NULL, NULL}</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">定义一个名为name的节点，并对其初始化  <a href="#ga08e2aeaf4c5fde424c509d3053e2fa6c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga33fc6503c3ba3fc80600d997780aa11d"></a><!-- doxytag: member="双向线形链表::DLLNK_CHECK_PASS" ref="ga33fc6503c3ba3fc80600d997780aa11d" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>DLLNK_CHECK_PASS</b>&#160;&#160;&#160;0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga98abf113d8ef2d011de0ae74a15bac3f"></a><!-- doxytag: member="双向线形链表::DLLNK_CHECK_LOOP" ref="ga98abf113d8ef2d011de0ae74a15bac3f" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>DLLNK_CHECK_LOOP</b>&#160;&#160;&#160;1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad6e52fd78f1c7acd6c295b9a9bf2defc"></a><!-- doxytag: member="双向线形链表::DLLNK_CHECK_LINK" ref="gad6e52fd78f1c7acd6c295b9a9bf2defc" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>DLLNK_CHECK_LINK</b>&#160;&#160;&#160;2</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf96c41737b8d631c6895026c3c29c9ed"></a><!-- doxytag: member="双向线形链表::dllnk_inc" ref="gaf96c41737b8d631c6895026c3c29c9ed" args="(itr)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaf96c41737b8d631c6895026c3c29c9ed">dllnk_inc</a>(itr)&#160;&#160;&#160;((itr) = (itr)-&gt;next)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器递增 <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga7a228a65239445ecffcfb2f3e6270d3f"></a><!-- doxytag: member="双向线形链表::dllnk_dec" ref="ga7a228a65239445ecffcfb2f3e6270d3f" args="(itr)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7a228a65239445ecffcfb2f3e6270d3f">dllnk_dec</a>(itr)&#160;&#160;&#160;((itr) = (itr)-&gt;prev)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器递减 <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga39baf07fbf9c40367413e5d212557e74"></a><!-- doxytag: member="双向线形链表::dllnk_inc_later" ref="ga39baf07fbf9c40367413e5d212557e74" args="(itr)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga39baf07fbf9c40367413e5d212557e74">dllnk_inc_later</a>(itr)&#160;&#160;&#160;__dllnk_inc_later(itr, &amp;(itr))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器后自增 <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga587175a3674d02b79688b531a8be8672"></a><!-- doxytag: member="双向线形链表::dllnk_dec_later" ref="ga587175a3674d02b79688b531a8be8672" args="(itr)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga587175a3674d02b79688b531a8be8672">dllnk_dec_later</a>(itr)&#160;&#160;&#160;__dllnk_dec_later(itr, &amp;(itr))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器后自减 <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gad8243d398dc6e9b795a51e5b811fe491">dllnk_foreach</a>(_begin, _end, fn, type, member)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">正向遍历_begin到_end的节点，并为每一个节点调用回调函数或宏  <a href="#gad8243d398dc6e9b795a51e5b811fe491"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaff6941fd85dec1f7998275b444bbab0f">dllnk_search</a>(head, _begin, _end, equal, var, res, type, member)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">顺序查找区域内的指定节点  <a href="#gaff6941fd85dec1f7998275b444bbab0f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga785922ebe4d1cc59203fcef25776c636">dllnk_vpush</a>(head, itr)&#160;&#160;&#160;dllnk_push_front(head, dllnk_inc_later(itr))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">入栈反转  <a href="#ga785922ebe4d1cc59203fcef25776c636"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gacfa222816896d7f7b87ca37b57185bc9">dllnk_serialize</a>(head, buf, type, member)&#160;&#160;&#160;__dllnk_serialize(head, (char**)(buf), offset_of(type, member))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">表的序列化  <a href="#gacfa222816896d7f7b87ca37b57185bc9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga1514d66dd9d06e311af3f5fa4baca309">dllnk_deserialize</a>(head, buf, cnt, type, member)&#160;&#160;&#160;__dllnk_deserialize(head, (char**)(buf), cnt, offset_of(type, member))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">表的反序列化  <a href="#ga1514d66dd9d06e311af3f5fa4baca309"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7edc28c8c51ef2ee5abeaddaa98269d9">dllnk_sort_insert</a>(head, newly, greater_equal, type, member)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">按升序插入新节点  <a href="#ga7edc28c8c51ef2ee5abeaddaa98269d9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4bbbce0305bddd53a3a8f7745bb611a6">dllnk_is_sorted</a>(_begin, _end, greater_equal, res, type, member)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否按序  <a href="#ga4bbbce0305bddd53a3a8f7745bb611a6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gac439692afec5b3becd5dbabdee620a6f">dllnk_bubble_sort</a>(_begin, _end, greater, type, member)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">对表进行冒泡排序  <a href="#gac439692afec5b3becd5dbabdee620a6f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gad5d51c77ceafbcdaa61868619442c637">dllnk_oddeven_sort</a>(_begin, _end, greater, type, member)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">对表进行奇偶排序  <a href="#gad5d51c77ceafbcdaa61868619442c637"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>__dllnk_oddeven_scan</b>(greater, type, member, _start)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga682c2252436a3180dc8c98faf50afd20">dllnk_cocktail_sort</a>(_begin, _end, greater, type, member)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">对表进行鸡尾酒排序  <a href="#ga682c2252436a3180dc8c98faf50afd20"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaa83554627bdbd917023fdaf55a5cf5bd">dllnk_select_sort</a>(_begin, _end, greater, type, member)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">对表进行选择排序  <a href="#gaa83554627bdbd917023fdaf55a5cf5bd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga1a256df2453272c4108accd43e4373a6">dllnk_insert_sort</a>(_begin, _end, greater_equal, type, member)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">对表进行插入排序  <a href="#ga1a256df2453272c4108accd43e4373a6"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="typedef-members"></a>
类型定义</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf04d58a524b222e00f3874ac37d28a40"></a><!-- doxytag: member="双向线形链表::dllnk_node" ref="gaf04d58a524b222e00f3874ac37d28a40" args="" -->
typedef struct <a class="el" href="struct____dllnk__node.html">__dllnk_node</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaf04d58a524b222e00f3874ac37d28a40">dllnk_node</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">节点 <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0dfcd15adc915116e6cbfada89e0b2d5"></a><!-- doxytag: member="双向线形链表::dllnk_iter" ref="ga0dfcd15adc915116e6cbfada89e0b2d5" args="" -->
typedef struct <a class="el" href="struct____dllnk__node.html">__dllnk_node</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga0dfcd15adc915116e6cbfada89e0b2d5">dllnk_iter</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">迭代器 <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9355ccdf941b5c303dee60ebb4303440"></a><!-- doxytag: member="双向线形链表::dllnk_pr1" ref="ga9355ccdf941b5c303dee60ebb4303440" args=")(dllnk_node *)" -->
typedef int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga9355ccdf941b5c303dee60ebb4303440">dllnk_pr1</a> )(<a class="el" href="struct____dllnk__node.html">dllnk_node</a> *)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">单参数回调函数指针 <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae215b02fef9242b63d82bfbc2f56e630"></a><!-- doxytag: member="双向线形链表::dllnk_pr2" ref="gae215b02fef9242b63d82bfbc2f56e630" args=")(dllnk_node *, dllnk_node *)" -->
typedef int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae215b02fef9242b63d82bfbc2f56e630">dllnk_pr2</a> )(<a class="el" href="struct____dllnk__node.html">dllnk_node</a> *, <a class="el" href="struct____dllnk__node.html">dllnk_node</a> *)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">双参数回调函数指针 <br/></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
函数</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_API int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaa16130c327a3a1a2ae085901c42e2d48">dllnk_check</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> *loop_entry)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断链表结构是否正常  <a href="#gaa16130c327a3a1a2ae085901c42e2d48"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gadd5be2ac140080aaff50f132c56ccb67">dllnk_init</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">初始化表头  <a href="#gadd5be2ac140080aaff50f132c56ccb67"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gac69bb96ee42b0bd76935a66ee2ba3a57">dllnk_empty</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否为空  <a href="#gac69bb96ee42b0bd76935a66ee2ba3a57"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2f4def0f29864cc2b471d87edf1a0633"></a><!-- doxytag: member="双向线形链表::__dllnk_singular" ref="ga2f4def0f29864cc2b471d87edf1a0633" args="(dllnk_node *front)" -->
static int&#160;</td><td class="memItemRight" valign="bottom"><b>__dllnk_singular</b> (<a class="el" href="struct____dllnk__node.html">dllnk_node</a> *front)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga0e4ed2cf1d80f3aaeb48eb51cc04d4cb">dllnk_singular</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否只有单个节点  <a href="#ga0e4ed2cf1d80f3aaeb48eb51cc04d4cb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaeb569329348a99148bb31c1ae41f8b5f">dllnk_sortable</a> (<a class="el" href="struct____dllnk__node.html">dllnk_iter</a> begin, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> end)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否可以排序  <a href="#gaeb569329348a99148bb31c1ae41f8b5f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae04e825309cae3e10caf0f64980bcf45">dllnk_serialable</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断表是否可以序列化  <a href="#gae04e825309cae3e10caf0f64980bcf45"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga3be6eee788ebd39efd1a0111cd5ceb34">dllnk_link</a> (<a class="el" href="struct____dllnk__node.html">dllnk_iter</a> prev, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> next)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">链接两个节点  <a href="#ga3be6eee788ebd39efd1a0111cd5ceb34"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gac01b762b32d894b386224a98ded5a03e">dllnk_insert_between</a> (<a class="el" href="struct____dllnk__node.html">dllnk_node</a> *newly, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> prev, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> next)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">在两个节点之间插入一个新节点  <a href="#gac01b762b32d894b386224a98ded5a03e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga9df2ed836a2efa15737b4043cf06e897">dllnk_insert</a> (<a class="el" href="struct____dllnk__node.html">dllnk_iter</a> pos, <a class="el" href="struct____dllnk__node.html">dllnk_node</a> *newly)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">插入节点到指定位置  <a href="#ga9df2ed836a2efa15737b4043cf06e897"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga0244c8a2f2488e82461c9ca7d960f57c">dllnk_erase</a> (<a class="el" href="struct____dllnk__node.html">dllnk_iter</a> entry)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">擦除节点  <a href="#ga0244c8a2f2488e82461c9ca7d960f57c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac0d13ccbed2349db3b1d146819c7d848"></a><!-- doxytag: member="双向线形链表::__dllnk_free" ref="gac0d13ccbed2349db3b1d146819c7d848" args="(dllnk_iter begin, dllnk_iter end, dllnk_pr1 erase_handler)" -->
NV_API void&#160;</td><td class="memItemRight" valign="bottom"><b>__dllnk_free</b> (<a class="el" href="struct____dllnk__node.html">dllnk_iter</a> begin, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> end, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga9355ccdf941b5c303dee60ebb4303440">dllnk_pr1</a> erase_handler)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga3abf11e0008f6f25163fb6176f8a83dd">dllnk_erases</a> (<a class="el" href="struct____dllnk__node.html">dllnk_iter</a> begin, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> end, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga9355ccdf941b5c303dee60ebb4303440">dllnk_pr1</a> erase_handler)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">清空区域  <a href="#ga3abf11e0008f6f25163fb6176f8a83dd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae3a257dc7738b2c38a794fa78231bf18">dllnk_clear</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga9355ccdf941b5c303dee60ebb4303440">dllnk_pr1</a> erase_handler)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">清空表  <a href="#gae3a257dc7738b2c38a794fa78231bf18"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gadfcd92624be83b1645bfba02ffdbe273">dllnk_push_front</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head, <a class="el" href="struct____dllnk__node.html">dllnk_node</a> *newly)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">在表首添加节点  <a href="#gadfcd92624be83b1645bfba02ffdbe273"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga347023d92cb9ca9721c05440bd1b7d2f">dllnk_pop_front</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">移除表首节点  <a href="#ga347023d92cb9ca9721c05440bd1b7d2f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaa20782f9b1767435d0f16dd0de0c870a">dllnk_splice_between</a> (<a class="el" href="struct____dllnk__node.html">dllnk_iter</a> prev, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> next, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> first_prev, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> first, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> last, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> last_next)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">在两个节点之间插入多个连续节点  <a href="#gaa20782f9b1767435d0f16dd0de0c870a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga66f8f6ca8e8861cbb461005b6e71f54b">dllnk_splice</a> (<a class="el" href="struct____dllnk__node.html">dllnk_iter</a> pos, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> first, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> last)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">在两个节点之间插入多个连续节点  <a href="#ga66f8f6ca8e8861cbb461005b6e71f54b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_API size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga59e49397ff2d1a45b313db980d4bba59">dllnk_count</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">统计表的节点数量  <a href="#ga59e49397ff2d1a45b313db980d4bba59"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_API size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga809cd392faca17774a7508fdce1382c3">dllnk_distance</a> (<a class="el" href="struct____dllnk__node.html">dllnk_iter</a> first, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> last)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">计算两个节点的迭代距离  <a href="#ga809cd392faca17774a7508fdce1382c3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_API <a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaddc2551f2a2069b7aed6165e7027c3fb">dllnk_advance</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> cur, int dist)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">给迭代器增加一段距离或减小一段距离  <a href="#gaddc2551f2a2069b7aed6165e7027c3fb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga13f6fe571e79098c177e287054559c81">dllnk_at</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head, const size_t index)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">根据正向索引得到迭代器  <a href="#ga13f6fe571e79098c177e287054559c81"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_API size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaf375dfd2e992dac1e5341420cb0489d5">dllnk_index_of</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> itr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">计算迭代器的正向索引  <a href="#gaf375dfd2e992dac1e5341420cb0489d5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaa9b47ea57c67cc60454e87d3e5e93f07">dllnk_node_init</a> (<a class="el" href="struct____dllnk__node.html">dllnk_node</a> *entry)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">初始化节点  <a href="#gaa9b47ea57c67cc60454e87d3e5e93f07"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga1afe3a368e765520c5b3897bc3000aed">dllnk_iter_replace</a> (<a class="el" href="struct____dllnk__node.html">dllnk_node</a> *victim, <a class="el" href="struct____dllnk__node.html">dllnk_node</a> *newly)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">用新节点替换目标节点  <a href="#ga1afe3a368e765520c5b3897bc3000aed"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga41223f68721d9ac46fb3f1e0666f1f62"></a><!-- doxytag: member="双向线形链表::__dllnk_iter_swap" ref="ga41223f68721d9ac46fb3f1e0666f1f62" args="(dllnk_iter aprev, dllnk_iter a, dllnk_iter anext, dllnk_iter bprev, dllnk_iter b, dllnk_iter bnext)" -->
NV_API void&#160;</td><td class="memItemRight" valign="bottom"><b>__dllnk_iter_swap</b> (<a class="el" href="struct____dllnk__node.html">dllnk_iter</a> aprev, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> a, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> anext, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> bprev, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> b, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> bnext)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga0cbe2317d338652e25137962c8651cee">dllnk_iter_swap</a> (<a class="el" href="struct____dllnk__node.html">dllnk_iter</a> a, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> b)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">交换两个节点  <a href="#ga0cbe2317d338652e25137962c8651cee"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga79d42c804f4faa777de813864441bb68">dllnk_replace</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *victim, <a class="el" href="structdllnk__head.html">dllnk_head</a> *newly)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">用新表头替换目标表头  <a href="#ga79d42c804f4faa777de813864441bb68"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga613c8bfbe9a547ddff5517ef3cd6a285"></a><!-- doxytag: member="双向线形链表::__dllnk_swap" ref="ga613c8bfbe9a547ddff5517ef3cd6a285" args="(dllnk_iter a, dllnk_iter afront, dllnk_iter b, dllnk_iter bfront)" -->
static void&#160;</td><td class="memItemRight" valign="bottom"><b>__dllnk_swap</b> (<a class="el" href="struct____dllnk__node.html">dllnk_iter</a> a, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> afront, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> b, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> bfront)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gab5fb46bc689b5163f4f4ab27bd12ae4d">dllnk_swap</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *a, <a class="el" href="structdllnk__head.html">dllnk_head</a> *b)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">交换两个表头  <a href="#gab5fb46bc689b5163f4f4ab27bd12ae4d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga1a8328b32cceaba4e63f13891352e8e6">dllnk_exist</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> itr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">判断一个节点是否存在于表中  <a href="#ga1a8328b32cceaba4e63f13891352e8e6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaab61b38bf3d3e3fd998f3df09b167a9d">dllnk_front</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到表首节点  <a href="#gaab61b38bf3d3e3fd998f3df09b167a9d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae5f823311646f456d16de39ffcde80b7">dllnk_begin</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到指向正向起始位置的迭代器  <a href="#gae5f823311646f456d16de39ffcde80b7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gacf71befe2c0d81f78cc4758a75df63d1">dllnk_end</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到指向正向终止位置的迭代器  <a href="#gacf71befe2c0d81f78cc4758a75df63d1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga561b71db25d025ae7f75e673b75cd567">dllnk_end_of</a> (<a class="el" href="struct____dllnk__node.html">dllnk_iter</a> itr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到当前迭代器的正向终止位置  <a href="#ga561b71db25d025ae7f75e673b75cd567"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga83d601c8b98ca875921d7e1bcfc597c8">dllnk_next</a> (<a class="el" href="struct____dllnk__node.html">dllnk_iter</a> itr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到当前节点的后继节点  <a href="#ga83d601c8b98ca875921d7e1bcfc597c8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaeffad2aa5e5b3d40a3a790a31d4a8c1c">dllnk_prev</a> (<a class="el" href="struct____dllnk__node.html">dllnk_iter</a> itr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到当前节点的前驱节点  <a href="#gaeffad2aa5e5b3d40a3a790a31d4a8c1c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab6b2b78fdff5adbe67e252eb7fdf9642"></a><!-- doxytag: member="双向线形链表::__dllnk_inc_later" ref="gab6b2b78fdff5adbe67e252eb7fdf9642" args="(dllnk_iter cur, dllnk_iter *p)" -->
static <a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><b>__dllnk_inc_later</b> (<a class="el" href="struct____dllnk__node.html">dllnk_iter</a> cur, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> *p)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga60141da27b5823029ac240e5268b3ca2"></a><!-- doxytag: member="双向线形链表::__dllnk_dec_later" ref="ga60141da27b5823029ac240e5268b3ca2" args="(dllnk_iter cur, dllnk_iter *p)" -->
static <a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><b>__dllnk_dec_later</b> (<a class="el" href="struct____dllnk__node.html">dllnk_iter</a> cur, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> *p)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad613250bf34de76e0840a72594540b3f"></a><!-- doxytag: member="双向线形链表::__dllnk_vbegin" ref="gad613250bf34de76e0840a72594540b3f" args="(dllnk_head *head, dllnk_iter front)" -->
static <a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><b>__dllnk_vbegin</b> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head, <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> front)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga668495163e8579cf93fda09f70dff68f">dllnk_vbegin</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到用于反转的起始位置的迭代器  <a href="#ga668495163e8579cf93fda09f70dff68f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga9937303dbbaab3b5ab2f2c067256ab37">dllnk_vend</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">得到用于反转的终止位置的迭代器  <a href="#ga9937303dbbaab3b5ab2f2c067256ab37"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">NV_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7d2fa56b3cec32f03368f90abdb315df">dllnk_reverse</a> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">反转表  <a href="#ga7d2fa56b3cec32f03368f90abdb315df"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac72c98b68e65b26292fd4ede1d64267d"></a><!-- doxytag: member="双向线形链表::__dllnk_serialize" ref="gac72c98b68e65b26292fd4ede1d64267d" args="(dllnk_head *head, char **buf, const size_t offset)" -->
NV_API void&#160;</td><td class="memItemRight" valign="bottom"><b>__dllnk_serialize</b> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head, char **buf, const size_t offset)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga87f8ee2eeb0f4d3e0eda7b47ea42cc29"></a><!-- doxytag: member="双向线形链表::__dllnk_deserialize" ref="ga87f8ee2eeb0f4d3e0eda7b47ea42cc29" args="(dllnk_head *head, char **buf, size_t cnt, const size_t offset)" -->
NV_API void&#160;</td><td class="memItemRight" valign="bottom"><b>__dllnk_deserialize</b> (<a class="el" href="structdllnk__head.html">dllnk_head</a> *head, char **buf, size_t cnt, const size_t offset)</td></tr>
</table>
<hr/><h2>宏定义文档</h2>
<a class="anchor" id="gaba46055af405e695c603e14df05be38f"></a><!-- doxytag: member="dllnk.h::DLLNK_HEAD" ref="gaba46055af405e695c603e14df05be38f" args="(name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DLLNK_HEAD</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">name</td><td>)</td>
          <td>&#160;&#160;&#160;<a class="el" href="structdllnk__head.html">dllnk_head</a> name = {NULL}</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>定义一个名为name的表头，并对其初始化 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">name</td><td>表头名称 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00062">62</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga08e2aeaf4c5fde424c509d3053e2fa6c"></a><!-- doxytag: member="dllnk.h::DLLNK_NODE" ref="ga08e2aeaf4c5fde424c509d3053e2fa6c" args="(name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DLLNK_NODE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">name</td><td>)</td>
          <td>&#160;&#160;&#160;<a class="el" href="struct____dllnk__node.html">dllnk_node</a> name = {NULL, NULL}</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>定义一个名为name的节点，并对其初始化 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">name</td><td>节点名称 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00063">63</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gad8243d398dc6e9b795a51e5b811fe491"></a><!-- doxytag: member="dllnk.h::dllnk_foreach" ref="gad8243d398dc6e9b795a51e5b811fe491" args="(_begin, _end, fn, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dllnk_foreach</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fn, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {<a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _q_e = (_end);                           \
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _q_f = (_begin);                         \
        <span class="keywordflow">while</span> (_q_f != _q_e) {                              \
            type * _q_t = container_of(_q_f, type, member); \
            _q_f = _q_f-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>;                              \
            fn(_q_t);                                       \
        }                                                   \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>正向遍历_begin到_end的节点，并为每一个节点调用回调函数或宏 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">_begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">fn</td><td>回调函数或宏 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00684">684</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaff6941fd85dec1f7998275b444bbab0f"></a><!-- doxytag: member="dllnk.h::dllnk_search" ref="gaff6941fd85dec1f7998275b444bbab0f" args="(head, _begin, _end, equal, var, res, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dllnk_search</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">equal, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">var, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">res, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {<a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _q_e = (_end);                               \
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _q_f = (_begin);                             \
        <a class="code" href="structdllnk__head.html" title="双向线形链表表头">dllnk_head</a>* _q_h = (head);                              \
        (res) = NULL;                                           \
        <span class="keywordflow">while</span> (_q_f != _q_e) {                                  \
            type * _q_cb = container_of(_q_f, type, member);    \
            <span class="keywordflow">if</span> (equal(_q_cb, (val))) {                          \
                (res) = _q_cb;                                  \
                <span class="keywordflow">break</span>;                                          \
            }                                                   \
            _q_f = _q_f-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>;                                  \
        }                                                       \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>顺序查找区域内的指定节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">equal</td><td>比较函数或宏。相等时返回1，不相等返回0 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">var</td><td>搜索的键值，常量，变量均可 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">res</td><td>保存搜索结果的变量，类型是节点指针。结果为NULL表示找不到节点 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00706">706</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga785922ebe4d1cc59203fcef25776c636"></a><!-- doxytag: member="dllnk.h::dllnk_vpush" ref="ga785922ebe4d1cc59203fcef25776c636" args="(head, itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dllnk_vpush</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">itr&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;dllnk_push_front(head, dllnk_inc_later(itr))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>入栈反转 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">itr</td><td>迭代器 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 反转表</span>
    <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> ve = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga9937303dbbaab3b5ab2f2c067256ab37" title="得到用于反转的终止位置的迭代器">dllnk_vend</a>(&amp;head);
    <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> vi = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga668495163e8579cf93fda09f70dff68f" title="得到用于反转的起始位置的迭代器">dllnk_vbegin</a>(&amp;head);
    <span class="keywordflow">while</span> (vi != ve) {
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga785922ebe4d1cc59203fcef25776c636" title="入栈反转">dllnk_vpush</a>(&amp;head, vi);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga668495163e8579cf93fda09f70dff68f" title="得到用于反转的起始位置的迭代器">dllnk_vbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga9937303dbbaab3b5ab2f2c067256ab37" title="得到用于反转的终止位置的迭代器">dllnk_vend</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7d2fa56b3cec32f03368f90abdb315df" title="反转表">dllnk_reverse</a> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00797">797</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gacfa222816896d7f7b87ca37b57185bc9"></a><!-- doxytag: member="dllnk.h::dllnk_serialize" ref="gacfa222816896d7f7b87ca37b57185bc9" args="(head, buf, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dllnk_serialize</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">buf, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;__dllnk_serialize(head, (char**)(buf), offset_of(type, member))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>表的序列化 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">buf</td><td>序列缓存 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>函数会遍历整个表，逐个将节点的拥有者地址存入缓存 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 判断是否可以序列化</span>
    <span class="keywordflow">if</span> (<a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae04e825309cae3e10caf0f64980bcf45" title="判断表是否可以序列化">dllnk_serialable</a>(&amp;head)) {
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab7b8f6f20db0f3e5681fd2184b1ae60c" title="type类型表头">slseq_head</a>(DATA*) seq;
        <span class="comment">// 分配序列缓存</span>
        DATA** buf = (DATA**)malloc(sizeof(DATA*) * list_cnt);
        <span class="comment">// 序列化</span>
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gacfa222816896d7f7b87ca37b57185bc9" title="表的序列化">dllnk_serialize</a>(&amp;head, buf, DATA, node);
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga08213d0c7bcf381b466b18e3822c6934" title="初始化序列">SLSEQ_INIT_SERIAL</a>(DATA*, &amp;seq, buf, list_cnt);
        <span class="comment">// 希尔排序</span>
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga197b786747dc3c95744f2bf8060b36ad" title="希尔排序">slseq_shell_sort</a>(DATA*, &amp;seq, <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2696503718b3292109d395da44c988b6" title="得到指向正向起始位置的迭代器">slseq_begin</a>(&amp;seq), 
            <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5b3212d3b18809e193c701f7c6fef755" title="得到指向正向终止位置的迭代器">slseq_end</a>(&amp;seq), DATA_Greater);
        <span class="comment">// 反序列化</span>
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga1514d66dd9d06e311af3f5fa4baca309" title="表的反序列化">dllnk_deserialize</a>(&amp;head, buf, list_cnt, DATA, node);
        <span class="comment">// 释放缓存</span>
        free(buf);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga1514d66dd9d06e311af3f5fa4baca309" title="表的反序列化">dllnk_deserialize</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae04e825309cae3e10caf0f64980bcf45" title="判断表是否可以序列化">dllnk_serialable</a> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00842">842</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga1514d66dd9d06e311af3f5fa4baca309"></a><!-- doxytag: member="dllnk.h::dllnk_deserialize" ref="ga1514d66dd9d06e311af3f5fa4baca309" args="(head, buf, cnt, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dllnk_deserialize</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">buf, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">cnt, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;__dllnk_deserialize(head, (char**)(buf), cnt, offset_of(type, member))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>表的反序列化 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">buf</td><td>序列缓存 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cnt</td><td>序列长度 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>函数会遍历整个序列来还原整个表 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 判断是否可以序列化</span>
    <span class="keywordflow">if</span> (<a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae04e825309cae3e10caf0f64980bcf45" title="判断表是否可以序列化">dllnk_serialable</a>(&amp;head)) {
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab7b8f6f20db0f3e5681fd2184b1ae60c" title="type类型表头">slseq_head</a>(DATA*) seq;
        <span class="comment">// 分配序列缓存</span>
        DATA** buf = (DATA**)malloc(sizeof(DATA*) * list_cnt);
        <span class="comment">// 序列化</span>
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gacfa222816896d7f7b87ca37b57185bc9" title="表的序列化">dllnk_serialize</a>(&amp;head, buf, DATA, node);
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga08213d0c7bcf381b466b18e3822c6934" title="初始化序列">SLSEQ_INIT_SERIAL</a>(DATA*, &amp;seq, buf, list_cnt);
        <span class="comment">// 希尔排序</span>
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga197b786747dc3c95744f2bf8060b36ad" title="希尔排序">slseq_shell_sort</a>(DATA*, <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2696503718b3292109d395da44c988b6" title="得到指向正向起始位置的迭代器">slseq_begin</a>(&amp;seq), 
            <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5b3212d3b18809e193c701f7c6fef755" title="得到指向正向终止位置的迭代器">slseq_end</a>(&amp;seq), DATA_Greater);
        <span class="comment">// 反序列化</span>
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga1514d66dd9d06e311af3f5fa4baca309" title="表的反序列化">dllnk_deserialize</a>(&amp;head, buf, list_cnt, DATA, node);
        <span class="comment">// 释放缓存</span>
        free(buf);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gacfa222816896d7f7b87ca37b57185bc9" title="表的序列化">dllnk_serialize</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae04e825309cae3e10caf0f64980bcf45" title="判断表是否可以序列化">dllnk_serialable</a> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00875">875</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga7edc28c8c51ef2ee5abeaddaa98269d9"></a><!-- doxytag: member="dllnk.h::dllnk_sort_insert" ref="ga7edc28c8c51ef2ee5abeaddaa98269d9" args="(head, newly, greater_equal, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dllnk_sort_insert</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">head, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">newly, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater_equal, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {\
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_n = (newly);                              \
        <a class="code" href="structdllnk__head.html" title="双向线形链表表头">dllnk_head</a>* _k_h = (head);                              \
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_i = _k_h-&gt;next;                           \
        <span class="keywordflow">while</span> (_k_i) {                                          \
            type * _k_pi = container_of(_k_i, type, member);    \
            type * _k_pn = container_of(_k_n, type, member);    \
            <span class="keywordflow">if</span> (greater_equal(_k_pi, _k_pn))                    \
                <span class="keywordflow">break</span>;                                          \
            _k_i = _k_i-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>;                                  \
        }                                                       \
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga9df2ed836a2efa15737b4043cf06e897" title="插入节点到指定位置">dllnk_insert</a>(_k_i, _k_n);                               \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>按升序插入新节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">newly</td><td>新节点 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater_equal</td><td>比较函数或宏， 升序:((*i)-&gt;x &gt;= (*j)-&gt;x) 降序:((*i)-&gt;x &lt;= (*j)-&gt;x) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00889">889</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga4bbbce0305bddd53a3a8f7745bb611a6"></a><!-- doxytag: member="dllnk.h::dllnk_is_sorted" ref="ga4bbbce0305bddd53a3a8f7745bb611a6" args="(_begin, _end, greater_equal, res, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dllnk_is_sorted</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater_equal, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">res, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {\
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_e = (_end);                               \
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_i = (_begin);                             \
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_j = _k_i-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>;                           \
        (res) = 1;                                              \
        <span class="keywordflow">while</span> (_k_j != _k_e) {                                  \
            type * _k_pi = container_of(_k_i, type, member);    \
            type * _k_pj = container_of(_k_j, type, member);    \
            <span class="keywordflow">if</span> (!(greater_equal(_k_pj, _k_pi))) {               \
                (res) = 0;                                      \
                <span class="keywordflow">break</span>;                                          \
            }                                                   \
            _k_i = _k_j;                                        \
            _k_j = _k_j-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>;                                  \
        }                                                       \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>判断表是否按序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">_begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">_end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater_equal</td><td>比较函数或宏， 升序:((*i)-&gt;x &gt;= (*j)-&gt;x) 降序:((*i)-&gt;x &lt;= (*j)-&gt;x) </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">res</td><td>保存输出结果的变量 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gac439692afec5b3becd5dbabdee620a6f" title="对表进行冒泡排序">dllnk_bubble_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gad5d51c77ceafbcdaa61868619442c637" title="对表进行奇偶排序">dllnk_oddeven_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaa83554627bdbd917023fdaf55a5cf5bd" title="对表进行选择排序">dllnk_select_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga1a256df2453272c4108accd43e4373a6" title="对表进行插入排序">dllnk_insert_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaeb569329348a99148bb31c1ae41f8b5f" title="判断表是否可以排序">dllnk_sortable</a> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00917">917</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gac439692afec5b3becd5dbabdee620a6f"></a><!-- doxytag: member="dllnk.h::dllnk_bubble_sort" ref="gac439692afec5b3becd5dbabdee620a6f" args="(_begin, _end, greater, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dllnk_bubble_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {    \
        <span class="keywordtype">int</span> _k_pc = 1;                                              \
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_e = (_end);                                   \
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_i = (_begin);                                 \
        <span class="keywordflow">for</span> (; _k_pc &amp;&amp; _k_i != _k_e; _k_i = _k_i-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>) {          \
            <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_j = _k_i-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>;                           \
            <span class="keywordflow">for</span> (_k_pc = 0; _k_j != _k_e; _k_j = _k_j-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>) {      \
                type * _k_pi = container_of(_k_i, type, member);    \
                type * _k_pj = container_of(_k_j, type, member);    \
                <span class="keywordflow">if</span> (greater(_k_pi, _k_pj)) {                        \
                    <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_t = _k_i;                         \
                    _k_i = _k_j;                                    \
                    _k_j = _k_t;                                    \
                    <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga0cbe2317d338652e25137962c8651cee" title="交换两个节点">dllnk_iter_swap</a>(_k_i, _k_j);                    \
                    _k_pc = 1;                                      \
                }                                                   \
            }                                                       \
        }                                                           \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>对表进行冒泡排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 升序:((*i)-&gt;x &gt; (*j)-&gt;x) 降序:((*i)-&gt;x &lt; (*j)-&gt;x) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaeb569329348a99148bb31c1ae41f8b5f" title="判断表是否可以排序">dllnk_sortable</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4bbbce0305bddd53a3a8f7745bb611a6" title="判断表是否按序">dllnk_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00952">952</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gad5d51c77ceafbcdaa61868619442c637"></a><!-- doxytag: member="dllnk.h::dllnk_oddeven_sort" ref="gad5d51c77ceafbcdaa61868619442c637" args="(_begin, _end, greater, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dllnk_oddeven_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {    \
        <span class="keywordtype">int</span> _k_pc = 1;                                                  \
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_e = (_end);                                       \
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_f = (_begin);                                     \
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_p = _k_f-&gt;<a class="code" href="struct____dllnk__node.html#a4251ec9a3c71f24d5e15b60de3df48fb" title="前驱节点">prev</a>;                                   \
        <span class="keywordflow">while</span> (_k_pc) {                                                 \
            _k_pc = 0;                                                  \
            _k_f = _k_p-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>;                                          \
            __dllnk_oddeven_scan(greater, type, member, _k_f);          \
            __dllnk_oddeven_scan(greater, type, member, _k_f-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>);    \
        }                                                               \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>对表进行奇偶排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 升序:((*i)-&gt;x &gt; (*j)-&gt;x) 降序:((*i)-&gt;x &lt; (*j)-&gt;x) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaeb569329348a99148bb31c1ae41f8b5f" title="判断表是否可以排序">dllnk_sortable</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4bbbce0305bddd53a3a8f7745bb611a6" title="判断表是否按序">dllnk_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00984">984</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gab1c9fb520c23ad35f25bdd313d19e9ed"></a><!-- doxytag: member="dllnk.h::__dllnk_oddeven_scan" ref="gab1c9fb520c23ad35f25bdd313d19e9ed" args="(greater, type, member, _start)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define __dllnk_oddeven_scan</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_start&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {    \
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_i = _start;                                   \
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_j = _k_i-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>;                               \
        <span class="keywordflow">while</span> (_k_j != _k_e) {                                      \
            type * _k_pi = container_of(_k_i, type, member);        \
            type * _k_pj = container_of(_k_j, type, member);        \
            <span class="keywordflow">if</span> (greater(_k_pi, _k_pj)) {                            \
                <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_t = _k_i;                             \
                _k_i = _k_j;                                        \
                _k_j = _k_t;                                        \
                <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga0cbe2317d338652e25137962c8651cee" title="交换两个节点">dllnk_iter_swap</a>(_k_i, _k_j);                        \
                _k_pc = 1;                                          \
            }                                                       \
            <span class="keywordflow">if</span> (!_k_j) <span class="keywordflow">break</span>;                                       \
            _k_i = _k_j-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>;                                      \
            <span class="keywordflow">if</span> (!_k_i) <span class="keywordflow">break</span>;                                       \
            _k_j = _k_i-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>;                                      \
        }                                                           \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00997">997</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga682c2252436a3180dc8c98faf50afd20"></a><!-- doxytag: member="dllnk.h::dllnk_cocktail_sort" ref="ga682c2252436a3180dc8c98faf50afd20" args="(_begin, _end, greater, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dllnk_cocktail_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>对表进行鸡尾酒排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 升序:((*i)-&gt;x &gt; (*j)-&gt;x) 降序:((*i)-&gt;x &lt; (*j)-&gt;x) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaeb569329348a99148bb31c1ae41f8b5f" title="判断表是否可以排序">dllnk_sortable</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4bbbce0305bddd53a3a8f7745bb611a6" title="判断表是否按序">dllnk_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l01029">1029</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaa83554627bdbd917023fdaf55a5cf5bd"></a><!-- doxytag: member="dllnk.h::dllnk_select_sort" ref="gaa83554627bdbd917023fdaf55a5cf5bd" args="(_begin, _end, greater, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dllnk_select_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {    \
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_e = (_end);                                   \
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_i = (_begin);                                 \
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_j = _k_i-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>;                               \
        <span class="keywordflow">while</span> (_k_j != _k_e) {                                      \
            <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_m = _k_i;                                 \
            <span class="keywordflow">while</span> (_k_j != _k_e) {                                  \
                type * _k_pj = container_of(_k_j, type, member);    \
                type * _k_pm = container_of(_k_m, type, member);    \
                <span class="keywordflow">if</span> (greater(_k_pm, _k_pj))                          \
                    _k_m = _k_j;                                    \
                _k_j = _k_j-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>;                                  \
            }                                                       \
            <span class="keywordflow">if</span> (_k_i != _k_m) {                                     \
                <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_t = _k_m;                             \
                _k_m = _k_i;                                        \
                _k_i = _k_t;                                        \
                <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga0cbe2317d338652e25137962c8651cee" title="交换两个节点">dllnk_iter_swap</a>(_k_m, _k_i);                        \
            }                                                       \
            _k_i = _k_i-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>;                                      \
            _k_j = _k_i-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>;                                      \
        }                                                           \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>对表进行选择排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 升序:((*i)-&gt;x &gt; (*j)-&gt;x) 降序:((*i)-&gt;x &lt; (*j)-&gt;x) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaeb569329348a99148bb31c1ae41f8b5f" title="判断表是否可以排序">dllnk_sortable</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4bbbce0305bddd53a3a8f7745bb611a6" title="判断表是否按序">dllnk_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l01096">1096</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga1a256df2453272c4108accd43e4373a6"></a><!-- doxytag: member="dllnk.h::dllnk_insert_sort" ref="ga1a256df2453272c4108accd43e4373a6" args="(_begin, _end, greater_equal, type, member)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define dllnk_insert_sort</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_begin, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_end, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">greater_equal, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">member&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>值:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span> {\
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_e = (_end);                                       \
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_f = (_begin);                                     \
        <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_i = _k_f-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>;                                   \
        <span class="keywordflow">for</span> (_k_f = _k_f-&gt;<a class="code" href="struct____dllnk__node.html#a4251ec9a3c71f24d5e15b60de3df48fb" title="前驱节点">prev</a>; _k_i != _k_e; _k_i = _k_i-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>) {      \
            type * _k_pi = container_of(_k_i, type, member);            \
            <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_j = _k_f-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>;                               \
            <span class="keywordflow">while</span> (_k_j != _k_i) {                                      \
                type * _k_pj = container_of(_k_j, type, member);        \
                <span class="keywordflow">if</span> (greater_equal(_k_pj, _k_pi)) {                      \
                    <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> _k_t = _k_i;                             \
                    _k_i = _k_i-&gt;<a class="code" href="struct____dllnk__node.html#a4251ec9a3c71f24d5e15b60de3df48fb" title="前驱节点">prev</a>;                                  \
                    <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga0244c8a2f2488e82461c9ca7d960f57c" title="擦除节点">dllnk_erase</a>(_k_t);                                  \
                    <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga9df2ed836a2efa15737b4043cf06e897" title="插入节点到指定位置">dllnk_insert</a>(_k_j, _k_t);                           \
                    <span class="keywordflow">break</span>;                                              \
                }                                                       \
                _k_j = _k_j-&gt;<a class="code" href="struct____dllnk__node.html#a13509ef7669bb042eca96b48540099bf" title="后继节点">next</a>;                                      \
            }                                                           \
        }                                                               \
    } <span class="keywordflow">while</span> (0)
</pre></div>
<p>对表进行插入排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">_end</td><td>终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">greater</td><td>比较函数或宏 升序:((*i)-&gt;x &gt; (*j)-&gt;x) 降序:((*i)-&gt;x &lt; (*j)-&gt;x) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>拥有者类型 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">member</td><td>所在成员名 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaeb569329348a99148bb31c1ae41f8b5f" title="判断表是否可以排序">dllnk_sortable</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4bbbce0305bddd53a3a8f7745bb611a6" title="判断表是否按序">dllnk_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l01132">1132</a>行定义。</p>

</div>
</div>
<hr/><h2>函数文档</h2>
<a class="anchor" id="gaa16130c327a3a1a2ae085901c42e2d48"></a><!-- doxytag: member="dllnk.h::dllnk_check" ref="gaa16130c327a3a1a2ae085901c42e2d48" args="(dllnk_head *head, dllnk_iter *loop_entry)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NV_API int dllnk_check </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a> *&#160;</td>
          <td class="paramname"><em>loop_entry</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断链表结构是否正常 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">loop_entry</td><td>指向保存环路入口的迭代器，可以为NULL。 若为空，则不返回环路入口； 若不为空且仅有环路问题，则函数将环路入口保存到loop_entry </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">DLLNK_CHECK_PASS</td><td>0 正常 </td></tr>
    <tr><td class="paramname">DLLNK_CHECK_LOOP</td><td>1 有非法环路 </td></tr>
    <tr><td class="paramname">DLLNK_CHECK_LINK</td><td>2 有节点的前驱指针不正确 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dllnk_8c_source.html">dllnk.c</a>第<a class="el" href="dllnk_8c_source.html#l00021">21</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gadd5be2ac140080aaff50f132c56ccb67"></a><!-- doxytag: member="dllnk.h::dllnk_init" ref="gadd5be2ac140080aaff50f132c56ccb67" args="(dllnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dllnk_init </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>初始化表头 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">head</td><td>目标表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <a class="code" href="structdllnk__head.html" title="双向线形链表表头">dllnk_head</a> head;
    <span class="comment">// 初始化</span>
    <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gadd5be2ac140080aaff50f132c56ccb67" title="初始化表头">dllnk_init</a>(&amp;head);
</pre></div> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00103">103</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gac69bb96ee42b0bd76935a66ee2ba3a57"></a><!-- doxytag: member="dllnk.h::dllnk_empty" ref="gac69bb96ee42b0bd76935a66ee2ba3a57" args="(dllnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline int dllnk_empty </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断表是否为空 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="keywordflow">if</span> (!<a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gac69bb96ee42b0bd76935a66ee2ba3a57" title="判断表是否为空">dllnk_empty</a>(&amp;head)) {
        ......
    }
</pre></div> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00122">122</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga0e4ed2cf1d80f3aaeb48eb51cc04d4cb"></a><!-- doxytag: member="dllnk.h::dllnk_singular" ref="ga0e4ed2cf1d80f3aaeb48eb51cc04d4cb" args="(dllnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline int dllnk_singular </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断表是否只有单个节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="keywordflow">if</span> (<a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga0e4ed2cf1d80f3aaeb48eb51cc04d4cb" title="判断表是否只有单个节点">dllnk_singular</a>(&amp;head)) {
        ......
    }
</pre></div> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00146">146</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaeb569329348a99148bb31c1ae41f8b5f"></a><!-- doxytag: member="dllnk.h::dllnk_sortable" ref="gaeb569329348a99148bb31c1ae41f8b5f" args="(dllnk_iter begin, dllnk_iter end)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline int dllnk_sortable </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>begin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>end</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断表是否可以排序 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">begin</td><td>起始位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">end</td><td>结束位置 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>即判断是否至少有两个节点 </dd></dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> begin = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae5f823311646f456d16de39ffcde80b7" title="得到指向正向起始位置的迭代器">dllnk_begin</a>(&amp;head);
    <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> end = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gacf71befe2c0d81f78cc4758a75df63d1" title="得到指向正向终止位置的迭代器">dllnk_end</a>(&amp;head);
    <span class="comment">// 判断是否可以排序</span>
    <span class="keywordflow">if</span> (<a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaeb569329348a99148bb31c1ae41f8b5f" title="判断表是否可以排序">dllnk_sortable</a>(begin, end)) {
        <span class="comment">// 插入排序</span>
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga1a256df2453272c4108accd43e4373a6" title="对表进行插入排序">dllnk_insert_sort</a>(begin, end, DATA_GreaterEqual, DATA, node);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gac439692afec5b3becd5dbabdee620a6f" title="对表进行冒泡排序">dllnk_bubble_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gad5d51c77ceafbcdaa61868619442c637" title="对表进行奇偶排序">dllnk_oddeven_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaa83554627bdbd917023fdaf55a5cf5bd" title="对表进行选择排序">dllnk_select_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga1a256df2453272c4108accd43e4373a6" title="对表进行插入排序">dllnk_insert_sort</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga4bbbce0305bddd53a3a8f7745bb611a6" title="判断表是否按序">dllnk_is_sorted</a> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00173">173</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae04e825309cae3e10caf0f64980bcf45"></a><!-- doxytag: member="dllnk.h::dllnk_serialable" ref="gae04e825309cae3e10caf0f64980bcf45" args="(dllnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline int dllnk_serialable </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断表是否可以序列化 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>即判断是否至少有一个节点 </dd></dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 判断是否可以序列化</span>
    <span class="keywordflow">if</span> (<a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae04e825309cae3e10caf0f64980bcf45" title="判断表是否可以序列化">dllnk_serialable</a>(&amp;head)) {
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#gab7b8f6f20db0f3e5681fd2184b1ae60c" title="type类型表头">slseq_head</a>(DATA*) seq;
        <span class="comment">// 分配序列缓存</span>
        DATA** buf = (DATA**)malloc(sizeof(DATA*) * list_cnt);
        <span class="comment">// 序列化</span>
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gacfa222816896d7f7b87ca37b57185bc9" title="表的序列化">dllnk_serialize</a>(&amp;head, buf, DATA, node);
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga08213d0c7bcf381b466b18e3822c6934" title="初始化序列">SLSEQ_INIT_SERIAL</a>(DATA*, &amp;seq, buf, list_cnt);
        <span class="comment">// 希尔排序</span>
        <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga197b786747dc3c95744f2bf8060b36ad" title="希尔排序">slseq_shell_sort</a>(DATA*, <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga2696503718b3292109d395da44c988b6" title="得到指向正向起始位置的迭代器">slseq_begin</a>(&amp;seq), 
            <a class="code" href="group___xE5_x8D_x95_xE7_xAB_xAF_xE7_xBA_xBF_xE5_xBD_xA2_xE5_xBA_x8F_xE8_xA1_xA8.html#ga5b3212d3b18809e193c701f7c6fef755" title="得到指向正向终止位置的迭代器">slseq_end</a>(&amp;seq), DATA_Greater);
        <span class="comment">// 反序列化</span>
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga1514d66dd9d06e311af3f5fa4baca309" title="表的反序列化">dllnk_deserialize</a>(&amp;head, buf, list_cnt, DATA, node);
        <span class="comment">// 释放缓存</span>
        free(buf);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gacfa222816896d7f7b87ca37b57185bc9" title="表的序列化">dllnk_serialize</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga1514d66dd9d06e311af3f5fa4baca309" title="表的反序列化">dllnk_deserialize</a> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00207">207</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga3be6eee788ebd39efd1a0111cd5ceb34"></a><!-- doxytag: member="dllnk.h::dllnk_link" ref="ga3be6eee788ebd39efd1a0111cd5ceb34" args="(dllnk_iter prev, dllnk_iter next)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dllnk_link </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>prev</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>next</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>链接两个节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">prev</td><td>前驱节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">next</td><td>后继节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>链接prev和next节点 </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00219">219</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gac01b762b32d894b386224a98ded5a03e"></a><!-- doxytag: member="dllnk.h::dllnk_insert_between" ref="gac01b762b32d894b386224a98ded5a03e" args="(dllnk_node *newly, dllnk_iter prev, dllnk_iter next)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dllnk_insert_between </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_node</a> *&#160;</td>
          <td class="paramname"><em>newly</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>prev</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>next</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>在两个节点之间插入一个新节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">newly</td><td>新节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">prev</td><td>前驱节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">next</td><td>后继节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>将newly节点插入到prev和next节点之间。如果prev和next不是相邻节点， 则newly将替换掉prev和next之间的所有节点 </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00242">242</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga9df2ed836a2efa15737b4043cf06e897"></a><!-- doxytag: member="dllnk.h::dllnk_insert" ref="ga9df2ed836a2efa15737b4043cf06e897" args="(dllnk_iter pos, dllnk_node *newly)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dllnk_insert </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>pos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_node</a> *&#160;</td>
          <td class="paramname"><em>newly</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>插入节点到指定位置 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">pos</td><td>插入位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">newly</td><td>新节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>将newly节点插入到pos的位置上，pos是从表头开始的位置 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> pos = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga13f6fe571e79098c177e287054559c81" title="根据正向索引得到迭代器">dllnk_at</a>(&amp;head, 8);
    DATA* p = (DATA*)malloc(<span class="keyword">sizeof</span>(DATA));
    <span class="comment">// 将p节点插入到pos所在的位置</span>
    <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga9df2ed836a2efa15737b4043cf06e897" title="插入节点到指定位置">dllnk_insert</a>(pos, &amp;p-&gt;node);
</pre></div> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00285">285</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga0244c8a2f2488e82461c9ca7d960f57c"></a><!-- doxytag: member="dllnk.h::dllnk_erase" ref="ga0244c8a2f2488e82461c9ca7d960f57c" args="(dllnk_iter entry)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dllnk_erase </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>entry</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>擦除节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">entry</td><td>目标节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> e = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gacf71befe2c0d81f78cc4758a75df63d1" title="得到指向正向终止位置的迭代器">dllnk_end</a>(&amp;head);
    <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> i = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae5f823311646f456d16de39ffcde80b7" title="得到指向正向起始位置的迭代器">dllnk_begin</a>(&amp;head);
    <span class="keywordflow">while</span> (i != e) {
        <span class="keywordflow">if</span> (is_bad_data(container_of(i, DATA, node)))
            <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga0244c8a2f2488e82461c9ca7d960f57c" title="擦除节点">dllnk_erase</a>(<a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga39baf07fbf9c40367413e5d212557e74" title="迭代器后自增">dllnk_inc_later</a>(i));
        <span class="keywordflow">else</span>
            <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaf96c41737b8d631c6895026c3c29c9ed" title="迭代器递增">dllnk_inc</a>(i);
    }
</pre></div> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00306">306</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga3abf11e0008f6f25163fb6176f8a83dd"></a><!-- doxytag: member="dllnk.h::dllnk_erases" ref="ga3abf11e0008f6f25163fb6176f8a83dd" args="(dllnk_iter begin, dllnk_iter end, dllnk_pr1 erase_handler)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dllnk_erases </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>begin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>end</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga9355ccdf941b5c303dee60ebb4303440">dllnk_pr1</a>&#160;</td>
          <td class="paramname"><em>erase_handler</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>清空区域 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">begin</td><td>区域起始位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">end</td><td>区域终止位置 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">erase_handler</td><td>移除响应函数，通常用于监视和释放节点，可以传递NULL, 表示不为删除的节点调用响应来处理 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>函数会为每一个被移除的节点调用erase_handler来处理节点 </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00328">328</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae3a257dc7738b2c38a794fa78231bf18"></a><!-- doxytag: member="dllnk.h::dllnk_clear" ref="gae3a257dc7738b2c38a794fa78231bf18" args="(dllnk_head *head, dllnk_pr1 erase_handler)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dllnk_clear </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga9355ccdf941b5c303dee60ebb4303440">dllnk_pr1</a>&#160;</td>
          <td class="paramname"><em>erase_handler</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>清空表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">erase_handler</td><td>移除响应函数，通常用于监视和释放节点，可以传递NULL, 表示不为删除的节点调用响应来处理 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>函数会为每一个被移除的节点调用erase_handler来处理节点 </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00345">345</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gadfcd92624be83b1645bfba02ffdbe273"></a><!-- doxytag: member="dllnk.h::dllnk_push_front" ref="gadfcd92624be83b1645bfba02ffdbe273" args="(dllnk_head *head, dllnk_node *newly)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dllnk_push_front </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_node</a> *&#160;</td>
          <td class="paramname"><em>newly</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>在表首添加节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">newly</td><td>新节点 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00356">356</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga347023d92cb9ca9721c05440bd1b7d2f"></a><!-- doxytag: member="dllnk.h::dllnk_pop_front" ref="ga347023d92cb9ca9721c05440bd1b7d2f" args="(dllnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dllnk_pop_front </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>移除表首节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00366">366</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaa20782f9b1767435d0f16dd0de0c870a"></a><!-- doxytag: member="dllnk.h::dllnk_splice_between" ref="gaa20782f9b1767435d0f16dd0de0c870a" args="(dllnk_iter prev, dllnk_iter next, dllnk_iter first_prev, dllnk_iter first, dllnk_iter last, dllnk_iter last_next)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dllnk_splice_between </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>prev</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>next</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>first_prev</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>first</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>last</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>last_next</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>在两个节点之间插入多个连续节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">prev</td><td>前驱节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">next</td><td>后继节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">first_prev</td><td>首节点的前驱节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">first</td><td>首节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">last</td><td>尾节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">last_next</td><td>尾节点的后继节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>将从first至last的节点嫁接到prev和next之间。如果prev和next之间有节点， 则它们之间的节点将会被替换 </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00386">386</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga66f8f6ca8e8861cbb461005b6e71f54b"></a><!-- doxytag: member="dllnk.h::dllnk_splice" ref="ga66f8f6ca8e8861cbb461005b6e71f54b" args="(dllnk_iter pos, dllnk_iter first, dllnk_iter last)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dllnk_splice </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>pos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>first</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>last</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>在两个节点之间插入多个连续节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">pos</td><td>插入位置 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">first</td><td>首节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">last</td><td>尾节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>将从first至last的节点嫁接到pos位置。可以跨链表移动 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 将a链表的节点全部嫁接到b链表</span>
    <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga66f8f6ca8e8861cbb461005b6e71f54b" title="在两个节点之间插入多个连续节点">dllnk_splice</a>(b, <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaab61b38bf3d3e3fd998f3df09b167a9d" title="得到表首节点">dllnk_front</a>(a), dllnk_back(b));
    <span class="comment">// 将b到e的节点们移动到第4个节点的位置</span>
    <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga66f8f6ca8e8861cbb461005b6e71f54b" title="在两个节点之间插入多个连续节点">dllnk_splice</a>(<a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga13f6fe571e79098c177e287054559c81" title="根据正向索引得到迭代器">dllnk_at</a>(head, 3), b, e);
</pre></div> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00420">420</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga59e49397ff2d1a45b313db980d4bba59"></a><!-- doxytag: member="dllnk.h::dllnk_count" ref="ga59e49397ff2d1a45b313db980d4bba59" args="(dllnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NV_API size_t dllnk_count </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>统计表的节点数量 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>size_t 返回表的节点总数 </dd></dl>

<p>在文件<a class="el" href="dllnk_8c_source.html">dllnk.c</a>第<a class="el" href="dllnk_8c_source.html#l00102">102</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga809cd392faca17774a7508fdce1382c3"></a><!-- doxytag: member="dllnk.h::dllnk_distance" ref="ga809cd392faca17774a7508fdce1382c3" args="(dllnk_iter first, dllnk_iter last)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NV_API size_t dllnk_distance </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>first</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>last</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>计算两个节点的迭代距离 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">first</td><td>首节点 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">last</td><td>尾节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>注解:</b></dt><dd>以索引为例，2到4的距离是4 (4-2+1=3) </dd></dl>
<dl class="return"><dt><b>返回:</b></dt><dd>size_t 返回距离 </dd></dl>

<p>在文件<a class="el" href="dllnk_8c_source.html">dllnk.c</a>第<a class="el" href="dllnk_8c_source.html#l00090">90</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaddc2551f2a2069b7aed6165e7027c3fb"></a><!-- doxytag: member="dllnk.h::dllnk_advance" ref="gaddc2551f2a2069b7aed6165e7027c3fb" args="(dllnk_head *head, dllnk_iter cur, int dist)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NV_API <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> dllnk_advance </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>cur</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>dist</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>给迭代器增加一段距离或减小一段距离 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cur</td><td>迭代器 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dist</td><td>增加的距离。正数时，表示增加；负数时，表示减小 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dllnk_iter 返回新迭代器 </dd></dl>

<p>在文件<a class="el" href="dllnk_8c_source.html">dllnk.c</a>第<a class="el" href="dllnk_8c_source.html#l00122">122</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga13f6fe571e79098c177e287054559c81"></a><!-- doxytag: member="dllnk.h::dllnk_at" ref="ga13f6fe571e79098c177e287054559c81" args="(dllnk_head *head, const size_t index)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> dllnk_at </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const size_t&#160;</td>
          <td class="paramname"><em>index</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>根据正向索引得到迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>索引，从0开始 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dllnk_iter 返回对应的迭代器 </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00461">461</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaf375dfd2e992dac1e5341420cb0489d5"></a><!-- doxytag: member="dllnk.h::dllnk_index_of" ref="gaf375dfd2e992dac1e5341420cb0489d5" args="(dllnk_head *head, dllnk_iter itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NV_API size_t dllnk_index_of </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>itr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>计算迭代器的正向索引 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>迭代器 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>size_t 返回索引 </dd></dl>

<p>在文件<a class="el" href="dllnk_8c_source.html">dllnk.c</a>第<a class="el" href="dllnk_8c_source.html#l00137">137</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaa9b47ea57c67cc60454e87d3e5e93f07"></a><!-- doxytag: member="dllnk.h::dllnk_node_init" ref="gaa9b47ea57c67cc60454e87d3e5e93f07" args="(dllnk_node *entry)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dllnk_node_init </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_node</a> *&#160;</td>
          <td class="paramname"><em>entry</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>初始化节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">entry</td><td>节点 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00480">480</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga1afe3a368e765520c5b3897bc3000aed"></a><!-- doxytag: member="dllnk.h::dllnk_iter_replace" ref="ga1afe3a368e765520c5b3897bc3000aed" args="(dllnk_node *victim, dllnk_node *newly)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dllnk_iter_replace </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_node</a> *&#160;</td>
          <td class="paramname"><em>victim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_node</a> *&#160;</td>
          <td class="paramname"><em>newly</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>用新节点替换目标节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">victim</td><td>受害目标节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">newly</td><td>新节点 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00493">493</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga0cbe2317d338652e25137962c8651cee"></a><!-- doxytag: member="dllnk.h::dllnk_iter_swap" ref="ga0cbe2317d338652e25137962c8651cee" args="(dllnk_iter a, dllnk_iter b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dllnk_iter_swap </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>b</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>交换两个节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">a</td><td>第一个节点 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">b</td><td>第二个节点 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00512">512</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga79d42c804f4faa777de813864441bb68"></a><!-- doxytag: member="dllnk.h::dllnk_replace" ref="ga79d42c804f4faa777de813864441bb68" args="(dllnk_head *victim, dllnk_head *newly)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dllnk_replace </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>victim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>newly</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>用新表头替换目标表头 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">victim</td><td>受害目标表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">newly</td><td>新表头 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00523">523</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gab5fb46bc689b5163f4f4ab27bd12ae4d"></a><!-- doxytag: member="dllnk.h::dllnk_swap" ref="gab5fb46bc689b5163f4f4ab27bd12ae4d" args="(dllnk_head *a, dllnk_head *b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline void dllnk_swap </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>b</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>交换两个表头 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">a</td><td>第一个表头 </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">b</td><td>第二个表头 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00549">549</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga1a8328b32cceaba4e63f13891352e8e6"></a><!-- doxytag: member="dllnk.h::dllnk_exist" ref="ga1a8328b32cceaba4e63f13891352e8e6" args="(dllnk_head *head, dllnk_iter itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline int dllnk_exist </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>itr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>判断一个节点是否存在于表中 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>目标节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>int 返回结果 </dd></dl>
<dl><dt><b>返回值:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">1</td><td>真 </td></tr>
    <tr><td class="paramname">0</td><td>假 </td></tr>
  </table>
  </dd>
</dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00563">563</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaab61b38bf3d3e3fd998f3df09b167a9d"></a><!-- doxytag: member="dllnk.h::dllnk_front" ref="gaab61b38bf3d3e3fd998f3df09b167a9d" args="(dllnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> dllnk_front </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到表首节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dllnk_iter 返回表首节点 </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00574">574</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gae5f823311646f456d16de39ffcde80b7"></a><!-- doxytag: member="dllnk.h::dllnk_begin" ref="gae5f823311646f456d16de39ffcde80b7" args="(dllnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> dllnk_begin </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到指向正向起始位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dllnk_iter 返回迭代器 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 遍历链表</span>
    <span class="keywordtype">int</span> index = 0;
    <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> e = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gacf71befe2c0d81f78cc4758a75df63d1" title="得到指向正向终止位置的迭代器">dllnk_end</a>();
    <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> i = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae5f823311646f456d16de39ffcde80b7" title="得到指向正向起始位置的迭代器">dllnk_begin</a>(&amp;head);
    <span class="keywordflow">while</span> (i != e) {
        printf(<span class="stringliteral">&quot;[%d]=%d\n&quot;</span>, index++, owner_of(i, DATA, node).data);
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gaf96c41737b8d631c6895026c3c29c9ed" title="迭代器递增">dllnk_inc</a>(i);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gacf71befe2c0d81f78cc4758a75df63d1" title="得到指向正向终止位置的迭代器">dllnk_end</a> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00597">597</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gacf71befe2c0d81f78cc4758a75df63d1"></a><!-- doxytag: member="dllnk.h::dllnk_end" ref="gacf71befe2c0d81f78cc4758a75df63d1" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> dllnk_end </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到指向正向终止位置的迭代器 </p>
<dl class="return"><dt><b>返回:</b></dt><dd>dllnk_iter 返回迭代器 </dd></dl>
<dl class="note"><dt><b>注解:</b></dt><dd>此函数永远返回NULL </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae5f823311646f456d16de39ffcde80b7" title="得到指向正向起始位置的迭代器">dllnk_begin</a> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00609">609</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga561b71db25d025ae7f75e673b75cd567"></a><!-- doxytag: member="dllnk.h::dllnk_end_of" ref="ga561b71db25d025ae7f75e673b75cd567" args="(dllnk_iter itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> dllnk_end_of </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>itr</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到当前迭代器的正向终止位置 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>迭代器 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dllnk_iter 返回迭代器 </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gae5f823311646f456d16de39ffcde80b7" title="得到指向正向起始位置的迭代器">dllnk_begin</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#gacf71befe2c0d81f78cc4758a75df63d1" title="得到指向正向终止位置的迭代器">dllnk_end</a> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00621">621</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga83d601c8b98ca875921d7e1bcfc597c8"></a><!-- doxytag: member="dllnk.h::dllnk_next" ref="ga83d601c8b98ca875921d7e1bcfc597c8" args="(dllnk_iter itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> dllnk_next </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>itr</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到当前节点的后继节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>当前节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dllnk_iter 返回后继节点 </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00632">632</a>行定义。</p>

</div>
</div>
<a class="anchor" id="gaeffad2aa5e5b3d40a3a790a31d4a8c1c"></a><!-- doxytag: member="dllnk.h::dllnk_prev" ref="gaeffad2aa5e5b3d40a3a790a31d4a8c1c" args="(dllnk_iter itr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> dllnk_prev </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct____dllnk__node.html">dllnk_iter</a>&#160;</td>
          <td class="paramname"><em>itr</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到当前节点的前驱节点 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">itr</td><td>当前节点 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dllnk_iter 返回前驱节点 </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00643">643</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga668495163e8579cf93fda09f70dff68f"></a><!-- doxytag: member="dllnk.h::dllnk_vbegin" ref="ga668495163e8579cf93fda09f70dff68f" args="(dllnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> dllnk_vbegin </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到用于反转的起始位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dllnk_iter 返回迭代器 </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 反转表</span>
    <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> ve = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga9937303dbbaab3b5ab2f2c067256ab37" title="得到用于反转的终止位置的迭代器">dllnk_vend</a>(&amp;head);
    <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> vi = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga668495163e8579cf93fda09f70dff68f" title="得到用于反转的起始位置的迭代器">dllnk_vbegin</a>(&amp;head);
    <span class="keywordflow">while</span> (vi != ve) {
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga785922ebe4d1cc59203fcef25776c636" title="入栈反转">dllnk_vpush</a>(&amp;head, vi);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga9937303dbbaab3b5ab2f2c067256ab37" title="得到用于反转的终止位置的迭代器">dllnk_vend</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga785922ebe4d1cc59203fcef25776c636" title="入栈反转">dllnk_vpush</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7d2fa56b3cec32f03368f90abdb315df" title="反转表">dllnk_reverse</a> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00754">754</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga9937303dbbaab3b5ab2f2c067256ab37"></a><!-- doxytag: member="dllnk.h::dllnk_vend" ref="ga9937303dbbaab3b5ab2f2c067256ab37" args="(dllnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static inline <a class="el" href="struct____dllnk__node.html">dllnk_iter</a> dllnk_vend </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>得到用于反转的终止位置的迭代器 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>返回:</b></dt><dd>dllnk_iter 返回迭代器 </dd></dl>
<dl class="note"><dt><b>注解:</b></dt><dd>函数永远返回NULL </dd></dl>
<dl class="user"><dt><b>示例:</b></dt><dd><div class="fragment"><pre class="fragment">    <span class="comment">// 反转表</span>
    <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> ve = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga9937303dbbaab3b5ab2f2c067256ab37" title="得到用于反转的终止位置的迭代器">dllnk_vend</a>(&amp;head);
    <a class="code" href="struct____dllnk__node.html" title="双向线形链表节点">dllnk_iter</a> vi = <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga668495163e8579cf93fda09f70dff68f" title="得到用于反转的起始位置的迭代器">dllnk_vbegin</a>(&amp;head);
    <span class="keywordflow">while</span> (vi != ve) {
        <a class="code" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga785922ebe4d1cc59203fcef25776c636" title="入栈反转">dllnk_vpush</a>(&amp;head, vi);
    }
</pre></div> </dd></dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga668495163e8579cf93fda09f70dff68f" title="得到用于反转的起始位置的迭代器">dllnk_vbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga785922ebe4d1cc59203fcef25776c636" title="入栈反转">dllnk_vpush</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga7d2fa56b3cec32f03368f90abdb315df" title="反转表">dllnk_reverse</a> </dd></dl>

<p>在文件<a class="el" href="dllnk_8h_source.html">dllnk.h</a>第<a class="el" href="dllnk_8h_source.html#l00776">776</a>行定义。</p>

</div>
</div>
<a class="anchor" id="ga7d2fa56b3cec32f03368f90abdb315df"></a><!-- doxytag: member="dllnk.h::dllnk_reverse" ref="ga7d2fa56b3cec32f03368f90abdb315df" args="(dllnk_head *head)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">NV_API void dllnk_reverse </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdllnk__head.html">dllnk_head</a> *&#160;</td>
          <td class="paramname"><em>head</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>反转表 </p>
<dl><dt><b>参数:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">head</td><td>表头 </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>参见:</b></dt><dd><a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga668495163e8579cf93fda09f70dff68f" title="得到用于反转的起始位置的迭代器">dllnk_vbegin</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga9937303dbbaab3b5ab2f2c067256ab37" title="得到用于反转的终止位置的迭代器">dllnk_vend</a>, <a class="el" href="group___xE5_x8F_x8C_xE5_x90_x91_xE7_xBA_xBF_xE5_xBD_xA2_xE9_x93_xBE_xE8_xA1_xA8.html#ga785922ebe4d1cc59203fcef25776c636" title="入栈反转">dllnk_vpush</a> </dd></dl>

<p>在文件<a class="el" href="dllnk_8c_source.html">dllnk.c</a>第<a class="el" href="dllnk_8c_source.html#l00115">115</a>行定义。</p>

</div>
</div>
</div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>数据结构</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>宏定义</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr class="footer"/><address class="footer"><small>Generated at 2015年七月16日 星期四 12:00:41 for Navo Portable Library by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address>
</body>
</html>
